#ifndef GAME_STATE_MACHINE_
#define GAME_STATE_MACHINE_

#include "game_state.h"
#include <vector>

// The FSM (Finite State Machine)
class GameStateMachine {
private:
    std::vector<GameState*> game_states_;

public:
    void PushState(GameState* state);  // add state without removing previous state
    void ChangeState(GameState* state);  // remove previous state before adding another
    void PopState();  // remove whichever state is currently used without adding another

    void Update();
    void Render();
};


#endif // GAME_STATE_MACHINE_
